The Joint Test Action Group (“JTAG”) standard is codified in the IEEE 1149.1-1993 Standard Test Access Port and Boundary-Scan Architecture. Presently, there are multiple IEEE 1149 versions, including 1149.1, 1149.6, and 1149.7 (hereinafter 1149.X refers to any version of the IEEE 1149.1-1993 protocols, including 1149.1). JTAG is primarily used to test printed circuit boards and debug integrated circuits. It is incorporated into many electronic devices such as cell phones or wireless access points. In addition, JTAG may be used to program data into non-volatile memory devices such as a complex programmable logic device (“CPLD”) or flash memory.
Typically, a JTAG interface has at least four or five pins, corresponding to Test Data In (“TDI”), Test Data Out (“TDO”), Test Clock (“TCK”), Test Mode Select (“TMS”), and, optionally, a Test Reset (TRST). A series of JTAG compliant devices may be “daisy-chained” or connected serially to one another in accordance with IEEE 1149.X. For example, the TDO output of a JTAG controller (host device) is received at the TDI input of a test access port (“TAP”) controller of the first device. The first device then outputs the data (as TDO) to a second device, where it is received as TDI (e.g., at a TAP controller of the second device). That is, the TDI pin of the first device is driven by the JTAG controller (input device) and TDO of the first device drives the TDI pin of the next device in the chain. If the second device is the last device in the chain, then it sends the data as TDO to the JTAG controller (input or host device). The JTAG controller also transmits TMS and TCK to each device in the chain. Thus, the JTAG controller transmits data to the first device in the chain. Upon receiving the TDO from the last device in the chain, the JTAG controller of the host device (e.g., input device) may then compare TDI to TDO to determine whether they are the same. TDO should equal TDI when there have been no errors in transmitting the data to the devices in the chain. Thus, JTAG implements a system that can program devices arranged in a series. The inability to program multiple devices simultaneously, however, may impede a production process flow.